﻿/*
 *  DFUtil - a utility for creating and implementing blueprints in Dwarf Fortress.
 *  
 *  Copyright (C) 2009  Katharine Gillis
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see http://www.gnu.org/licenses/.
*/

using System.Collections.Generic;
using System.Drawing;

namespace DFUtil
{
    /// <summary>
    /// Stores information about a phase.
    /// </summary>
    public class Phase
    {
        #region Properties

        private string _name;
        /// <summary>
        /// Gets or sets the phase name.
        /// </summary>
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        
        private List<List<Item>> _floors;
        /// <summary>
        /// Gets the floors in the phase.
        /// </summary>
        public List<List<Item>> Floors
        {
            get { return _floors ; }
        }

        private PhaseType _type;
        /// <summary>
        /// Gets the type of the phase.
        /// </summary>
        public PhaseType Type
        {
            get { return _type; }
        }

        private Point _startingPoint;
        /// <summary>
        /// Gets or sets the starting point of the phase.
        /// </summary>
        public Point StartingPoint
        {
            get { return _startingPoint; }
            set { _startingPoint = value; }
        }

        private int _startingFloor;
        /// <summary>
        /// Gets or sets the starting floor of the phase.
        /// </summary>
        public int StartingFloor
        {
            get { return _startingFloor; }
            set { _startingFloor = value; }
        }

        #endregion

        #region Constructor

        /// <summary>
        /// Creates a new phase of the given type, creating a single floor.
        /// </summary>
        /// <param name="type">Type of phase to create.</param>
        public Phase(PhaseType type)
        {
            _floors = new List<List<Item>>();
            _floors.Add(new List<Item>());
            _type = type;
            _startingPoint = new Point(0, 0);
            _startingFloor = 0;
        }

        #endregion
    }
}
